import request from "@/utils/request";

const USER_BASE_URL = "/core/tStockDetailLocation";

const qualityAPI = {
  /**
   * 获取当前登录用户信息
   *
   * @returns 登录用户昵称、头像信息，包括角色和权限
   */
  getInfo() {
    return request<any, UserInfo>({
      url: `${USER_BASE_URL}/me`,
      method: "get",
    });
  },

  /**
   * 库存查询-库存total
   *
   * @param queryParams 查询参数
   */
  getTotal(queryParams: qualityPageQuery) {
    let query = encodeURIComponent(JSON.stringify({ ...queryParams }));
    return request<any, totalVO>({
      url: `/core/tStockHead/getTStockDetailTotal?object=${query}`,
      method: "get",
    });
  },

  /**
   * 获取用户表单详情
   *
   * @param userId 用户ID
   * @returns 用户表单详情
   */
  getFormData(userId: number) {
    return request<any, UserForm>({
      url: `${USER_BASE_URL}/${userId}/form`,
      method: "get",
    });
  },

  /**
   * 添加用户
   *
   * @param data 用户表单数据
   */
  add(data: UserForm) {
    return request({
      url: `${USER_BASE_URL}`,
      method: "post",
      data: data,
    });
  },

  /**
   * 修改用户
   *
   * @param id 用户ID
   * @param data 用户表单数据
   */
  update(id: number, data: UserForm) {
    return request({
      url: `${USER_BASE_URL}/${id}`,
      method: "put",
      data: data,
    });
  },

  /**
   * 修改用户密码
   *
   * @param id 用户ID
   * @param password 新密码
   */
  resetPassword(id: number, password: string) {
    return request({
      url: `${USER_BASE_URL}/${id}/password/reset`,
      method: "put",
      params: { password: password },
    });
  },

  /**
   * 批量删除用户，多个以英文逗号(,)分割
   *
   * @param ids 用户ID字符串，多个以英文逗号(,)分割
   */
  deleteByIds(ids: string) {
    return request({
      url: `${USER_BASE_URL}/${ids}`,
      method: "delete",
    });
  },

  /** 下载用户导入模板 */
  downloadTemplate() {
    return request({
      url: `${USER_BASE_URL}/template`,
      method: "get",
      responseType: "blob",
    });
  },

  /**
   * 导出用户
   *
   * @param queryParams 查询参数
   */
  export(queryParams: qualityPageQuery) {
    return request({
      url: `${USER_BASE_URL}/export`,
      method: "get",
      params: queryParams,
      responseType: "blob",
    });
  },

  /**
   * 导入用户
   *
   * @param deptId 部门ID
   * @param file 导入文件
   */
  import(deptId: number, file: File) {
    const formData = new FormData();
    formData.append("file", file);
    return request({
      url: `${USER_BASE_URL}/import`,
      method: "post",
      params: { deptId: deptId },
      data: formData,
      headers: {
        "Content-Type": "multipart/form-data",
      },
    });
  },

  /** 获取个人中心用户信息 */
  getProfile() {
    return request<any, UserProfileVO>({
      url: `${USER_BASE_URL}/profile`,
      method: "get",
    });
  },

  /** 修改个人中心用户信息 */
  updateProfile(data: UserProfileForm) {
    return request({
      url: `${USER_BASE_URL}/profile`,
      method: "put",
      data: data,
    });
  },

  /** 修改个人中心用户密码 */
  changePassword(data: PasswordChangeForm) {
    return request({
      url: `${USER_BASE_URL}/password`,
      method: "put",
      data: data,
    });
  },

  /**
   *   发送手机/邮箱验证码
   *
   * @param contact 联系方式  手机号/邮箱
   * @param contactType 联系方式类型 MOBILE:手机;EMAIL:邮箱
   */
  sendVerificationCode(contact: string, contactType: string) {
    return request({
      url: `${USER_BASE_URL}/send-verification-code`,
      method: "get",
      params: { contact: contact, contactType: contactType },
    });
  },

  /** 绑定个人中心用户手机 */
  bindMobile(data: MobileBindingForm) {
    return request({
      url: `${USER_BASE_URL}/mobile`,
      method: "put",
      data: data,
    });
  },

  /** 绑定个人中心用户邮箱 */
  bindEmail(data: EmailBindingForm) {
    return request({
      url: `${USER_BASE_URL}/email`,
      method: "put",
      data: data,
    });
  },

  /**
   *  获取用户下拉列表
   */
  getOptions() {
    return request<any, OptionType[]>({
      url: `${USER_BASE_URL}/options`,
      method: "get",
    });
  },
  /**
   * 获取质检单
   *
   * @param queryParams 查询参数
   */
  getPage(queryParams: QualityControlInquire) {
    let query = encodeURIComponent(JSON.stringify({ ...queryParams }));

    return request<any, PageResult<QualityControlInfo[]>>({
      url: `/core/prodReport/getProdReportList?object=${query}`,
      method: "get",
    });
  },
  /**
   * 新增或更新质检单
   *
   * @param data 质量管理表单
   */
  saveOrUpdateProdReport(data: QualityControlInfo) {
    return request({
      url: `/core/prodReport/saveOrUpdateProdReport`,
      method: "post",
      data: data,
    });
  },
  /**
   * 批量删除用户，多个以英文逗号(,)分割
   *
   * @param ids 用户ID字符串，多个以英文逗号(,)分割
   */
  delProdReport(id: any) {
    return request({
      url: `/core/prodReport/delProdReport`,
      method: "post",
      data: id,
    });
  },
};

export default qualityAPI;

/** 登录用户信息 */
export interface UserInfo {
  /** 用户ID */
  userId?: number;

  /** 用户名 */
  username?: string;

  /** 昵称 */
  nickname?: string;

  /** 头像URL */
  avatar?: string;

  /** 角色 */
  roles: string[];

  /** 权限 */
  perms: string[];
}

/**
 * 用户分页查询对象
 */
export interface qualityPageQuery extends PageQuery {
  /** 筐码 */
  basketCode?: string;

  /** 标签码 */
  tagCode?: string;

  /** 状态 */
  status?: string;

  /** 生产时间 */
  productionTime?: string;
}
// const dialogParams = reactive({
//   order: "", //采购订单
//   rawType: "", //原材料类型
//   rawId: "", //原材料编号
//   rawName: "", //原材料名称
//   supplierId: "", //原材料编号
//   supplierName: "", //原材料名称
//   purchaseNum: "", //采购数量
//   actualNum: "", //实际数量
//   standardNum: "", //合格数量
//   basket: "", //取样筐码
//   passRate: "", //合格率
//   kindImg: [], //实物图
//   reportImg: [], //报告图
//   name: "", //创建人
//   time: "", //创建时间
// });
/**
 * 质检单查询对象
 */
export interface QualityControlInquire extends PageQuery {
  code?: string; //质检单号 批次号
  //生产单号 采购单号 生产批次号
  parentCode?: string;

  // 原材料类型  产品类型
  productCategory?: string;

  // 原材料名称  产品名称
  productName?: string;
  reportName?: string; //质检人
  status?: number; //状态 0:待检验 1:检验中 2:检验通过 3:检验不通过

  /** 检验时间 */
  timeScopes?: string | Date;
  qualityType?: number; //质检单类型, 0=产品质检单, 1=原材料质检单
}
/** 质量管理表单 */
export interface QualityControlInfo {
  // order?: string; // 采购订单
  productCategory?: number; // 原材料类型  产品类型
  productCode?: string; // 原材料编号  产品编号
  productName?: string; // 原材料名称  产品名称
  supplierCode?: string; // 供应商编号
  supplierName?: string; // 供应商名称
  purchaseQuantity?: number; // 采购数量
  actualQuantity?: number; // 实际数量
  qualifiedQuantity?: number; // 合格数量
  qualifiedRate?: number; //合格率
  physicalImage?: []; //实物图
  reportImage?: []; //报告图
  parentCode?: string; //生产单号 采购单号 生产批次号
  code?: string; //质检单号 批次号
  reportName?: string; //质检人
  reportTime?: string; //质检时间
  orderType?: number; //订单类型, 0=生产单号, 1=采购单号
  qualityType?: number; //质检单类型, 0=产品质检单, 1=原材料质检单
  remark?: string; //备注
  status?: string; //质检状态
  unit?: string;
}
/** 质量管理表格 */
export interface QualityControlTab {
  code?: string; //质检单号 批次号
  parentCode?: string; //生产单号 采购单号 生产批次号
  productCategory?: number; // 原材料类型  产品类型
  productCode?: string; // 原材料编号  产品编号
  productName?: string; // 原材料名称  产品名称
  purchaseQuantity?: number; // 采购数量
  actualQuantity?: number; // 实际数量
  qualifiedQuantity?: number; // 合格数量
  qualifiedRate?: string; //合格率
  status?: number; //状态 0:待检验 1:检验中 2:检验通过 3:检验不通过
  // supplierCode?: string; // 供应商编号
  // supplierName?: string; // 供应商名称

  // physicalImage?: []; //实物图
  // reportImage?: []; //报告图
  // createName?: string; //创建人
  // createTime?: string; //创建时间

  reportName?: string; //质检人
  reportTime?: string; //质检时间
  // order_type?: number; //订单类型, 0=生产单号, 1=采购单号
}

/** 订单分页对象 */
export interface qualityPageVO {
  /**
   * 筐码
   */
  basketCode: string;

  /**
   * 标签码
   */
  tagCode: string;

  /**
   * 产品名称
   */
  productName: string;

  /**
   * 供应商
   */
  supplier: string;

  /**
   * 原料入库时间
   */
  rawMaterialInboundTime: string;

  /**
   * 生产时间
   */
  productionTime: string;

  /**
   * 生产工序
   */
  productionProcess: string;

  /**
   * 质检员
   */
  qualityInspector: string;

  /**
   * 配送时间
   */
  deliveryTime: string;
}

export interface totalVO {
  //总计
  qtyTotal?: number;
}

/** 用户表单类型 */
export interface UserForm {
  /** 用户头像 */
  avatar?: string;
  /** 部门ID */
  deptId?: number;
  /** 邮箱 */
  email?: string;
  /** 性别 */
  gender?: number;
  /** 用户ID */
  id?: number;
  /** 手机号 */
  mobile?: string;
  /** 昵称 */
  nickname?: string;
  /** 角色ID集合 */
  roleIds?: number[];
  /** 用户状态(1:正常;0:禁用) */
  status?: number;
  /** 用户名 */
  username?: string;
}

/** 个人中心用户信息 */
export interface UserProfileVO {
  /** 用户ID */
  id?: number;

  /** 用户名 */
  username?: string;

  /** 昵称 */
  nickname?: string;

  /** 头像URL */
  avatar?: string;

  /** 性别 */
  gender?: number;

  /** 手机号 */
  mobile?: string;

  /** 邮箱 */
  email?: string;

  /** 部门名称 */
  deptName?: string;

  /** 角色名称，多个使用英文逗号(,)分割 */
  roleNames?: string;

  /** 创建时间 */
  createTime?: Date;
}

/** 个人中心用户信息表单 */
export interface UserProfileForm {
  /** 用户ID */
  id?: number;

  /** 用户名 */
  username?: string;

  /** 昵称 */
  nickname?: string;

  /** 头像URL */
  avatar?: string;

  /** 性别 */
  gender?: number;

  /** 手机号 */
  mobile?: string;

  /** 邮箱 */
  email?: string;
}

/** 修改密码表单 */
export interface PasswordChangeForm {
  /** 原密码 */
  oldPassword?: string;
  /** 新密码 */
  newPassword?: string;
  /** 确认新密码 */
  confirmPassword?: string;
}

/** 修改手机表单 */
export interface MobileBindingForm {
  /** 手机号 */
  mobile?: string;
  /** 验证码 */
  code?: string;
}

/** 修改邮箱表单 */
export interface EmailBindingForm {
  /** 邮箱 */
  email?: string;
  /** 验证码 */
  code?: string;
}
